public class BravoController extends Controller {
    //Attrbute
    int spieler = 0;
    boolean angreifen = false;
    boolean fehler = false;
    int alterSpieler = 0;
    //Konstruktor
    public BravoController (){
    }

    //Methoden
    public void buttonGedrueckt(int i)
    {
        if(i==0)
        {
            if(this.angreifen == false){this.angreifen = true;} 

            else {this.angreifen = false;
                view.angreifenButtonGedrueckt(1);
            }
        }
    }

    public void zug(int x, int y)
    {
        System.out.println(x+","+y);
        
        view.figurAnzeigeAendern(spieler);
        if(spieler == 0)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else 
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 0)");
            }
            if(fehler == false)
            {
                if(istTot(5) == false) {
                    spieler = 5;
                } else if (istTot(1) == false) {
                    spieler = 1;
                } else if (istTot(6) == false) {
                    spieler = 6;
                } else if (istTot(2) == false) {
                    spieler = 2;
                } else if (istTot(7) == false) {
                    spieler = 7;
                } else if (istTot(3) == false) {
                    spieler = 3;
                } else if (istTot(8) == false) {
                    spieler = 8;
                } else if (istTot(4) == false) {
                    spieler = 4;
                } else if (istTot(9) == false) {
                    spieler = 9;
                }
            }
        }
        else if(spieler == 1)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 1)");
            }
            if(fehler == false)
            {
                if (istTot(6) == false) {
                    spieler = 6;
                } else if (istTot(2) == false) {
                    spieler = 2;
                } else if (istTot(7) == false) {
                    spieler = 7;
                } else if (istTot(3) == false) {
                    spieler = 3;
                } else if (istTot(8) == false) {
                    spieler = 8;
                } else if (istTot(4) == false) {
                    spieler = 4;
                } else if (istTot(9) == false) {
                    spieler = 9;
                } else if(istTot(0) == false) {
                    spieler = 0;
                } else if (istTot(5) == false) {
                    spieler = 5;
                } 
            }
        }
        else if(spieler == 2)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 2)");
            }
            if(fehler == false)
            {
                if (istTot(7) == false) {
                    spieler = 7;
                } else if (istTot(3) == false) {
                    spieler = 3;
                } else if (istTot(8) == false) {
                    spieler = 8;
                } else if (istTot(4) == false) {
                    spieler = 4;
                } else if (istTot(9) == false) {
                    spieler = 9;
                } else if(istTot(0) == false) {
                    spieler = 0;
                } else if (istTot(5) == false) {
                    spieler = 5;
                } else if (istTot(1) == false) {
                    spieler = 1;
                } else if (istTot(6) == false) {
                    spieler = 6;
                }
            }
        }
        else if(spieler == 3)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 3)");
            }
            if(fehler == false)
            {
                if (istTot(8) == false) {
                    spieler = 8;
                } else if (istTot(4) == false) {
                    spieler = 4;
                } else if (istTot(9) == false) {
                    spieler = 9;
                } else if(istTot(0) == false) {
                    spieler = 0;
                } else if (istTot(5) == false) {
                    spieler = 5;
                } else if (istTot(1) == false) {
                    spieler = 1;
                } else if (istTot(6) == false) {
                    spieler = 6;
                } else if (istTot(2) == false) {
                    spieler = 2;
                } else if (istTot(7) == false) {
                    spieler = 7;
                }
            }
        }
        else if(spieler == 4)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 4)");
            }
            if(fehler == false)
            {
                if (istTot(9) == false) {
                    spieler = 9;
                } else if(istTot(0) == false) {
                    spieler = 0;
                } else if (istTot(5) == false) {
                    spieler = 5;
                } else if (istTot(1) == false) {
                    spieler = 1;
                } else if (istTot(6) == false) {
                    spieler = 6;
                } else if (istTot(2) == false) {
                    spieler = 2;
                } else if (istTot(7) == false) {
                    spieler = 7;
                } else if (istTot(3) == false) {
                    spieler = 3;
                } else if (istTot(8) == false) {
                    spieler = 8;
                }
            }
        }
        else if(spieler == 5)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 5)");
            }
            if(fehler == false)
            {
                if (istTot(1) == false) {
                    spieler = 1;
                } else if (istTot(6) == false) {
                    spieler = 6;
                } else if (istTot(2) == false) {
                    spieler = 2;
                } else if (istTot(7) == false) {
                    spieler = 7;
                } else if (istTot(3) == false) {
                    spieler = 3;
                } else if (istTot(8) == false) {
                    spieler = 8;
                } else if (istTot(4) == false) {
                    spieler = 4;
                } else if(istTot(9) == false) {
                    spieler = 9;
                } else if (istTot(0) == false) {
                    spieler = 0;
                }
            }
        }
        else if(spieler == 6)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 6)");
            }
            if(fehler == false)
            {
                if (istTot(2) == false) {
                    spieler = 2;
                } else if (istTot(7) == false) {
                    spieler = 7;
                } else if (istTot(3) == false) {
                    spieler = 3;
                } else if (istTot(8) == false) {
                    spieler = 8;
                } else if (istTot(4) == false) {
                    spieler = 4;
                } else if(istTot(9) == false) {
                    spieler = 9;
                } else if (istTot(0) == false) {
                    spieler = 0;
                } else if (istTot(5) == false) {
                    spieler = 5;
                } else if (istTot(1) == false) {
                    spieler = 1;
                }
            }
        }
        else if(spieler == 7)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 7)");
            }
            if(fehler == false)
            {
                if (istTot(3) == false) {
                    spieler = 3;
                } else if (istTot(8) == false) {
                    spieler = 8;
                } else if (istTot(4) == false) {
                    spieler = 4;
                } else if(istTot(9) == false) {
                    spieler = 9;
                } else if (istTot(0) == false) {
                    spieler = 0;
                } else if (istTot(5) == false) {
                    spieler = 5;
                } else if (istTot(1) == false) {
                    spieler = 1;
                } else if (istTot(6) == false) {
                    spieler = 6;
                } else if (istTot(2) == false) {
                    spieler = 2;
                }
            }
        }
        else if(spieler == 8)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 8)");
            }
            if(fehler == false)
            {
                if (istTot(4) == false) {
                    spieler = 4;
                } else if(istTot(9) == false) {
                    spieler = 9;
                } else if (istTot(0) == false) {
                    spieler = 0;
                } else if (istTot(5) == false) {
                    spieler = 5;
                } else if (istTot(1) == false) {
                    spieler = 1;
                } else if (istTot(6) == false) {
                    spieler = 6;
                } else if (istTot(2) == false) {
                    spieler = 2;
                } else if (istTot(7) == false) {
                    spieler = 7;
                } else if (istTot(3) == false) {
                    spieler = 3;
                }

            }
        }
        else if(spieler == 9)
        {
            if(istTot(spieler) == false)
            {
                if(angreifen == true)
                {
                    kannAngreifen(x, y, spieler);
                }else
                {
                    kannGehenAuf(x,y,spieler);
                }
            } else
            {
                fehler=false;
                angreifen = false;
                System.out.println("ICH BIN TOT, AAAAAH (Spieler 9)");
            }
            if(fehler == false)
            {
                if (istTot(0) == false) {
                    spieler = 0;
                } else if (istTot(5) == false) {
                    spieler = 5;
                } else if (istTot(1) == false) {
                    spieler = 1;
                } else if (istTot(6) == false) {
                    spieler = 6;
                } else if (istTot(2) == false) {
                    spieler = 2;
                } else if (istTot(7) == false) {
                    spieler = 7;
                } else if (istTot(3) == false) {
                    spieler = 3;
                } else if (istTot(8) == false) {
                    spieler = 8;
                } else if (istTot(4) == false) {
                    spieler = 4;
                }
            }
        }

        for(int i=0; i<11; i++)
        {
            if(istTot(i) == true)
            {
                angreifen = false;
                int alteX = model.figurGeben(i).xGeben();
                int alteY = model.figurGeben(i).yGeben();
                model.einheitSetzen(alteX,alteY, (char)i);
                fehler = false;
                System.out.println("Spieler " + i + " ist tot");
            }

            if (istTot(0) == true && istTot(1) == true && istTot(2) == true && istTot(3) == true && istTot(4) == true)
            {
                System.out.println("Spieler2 hat gewonnen!");
            } else if (istTot(5) == true && istTot(6) == true && istTot(7) == true && istTot(8) == true && istTot(9) == true)
            {
                System.out.println("Spieler1 hat gewonnen!");
            }
            //             if(i<5)
            //             {
            //               model.figurGeben(i).gesundheitGeben() <=0;
            //               System.out.println("Spieler1 hat gewonnen!");
            //             }
            //             else
            //             {
            //               model.figurGeben(i).gesundheitGeben() <=0;
            //               System.out.println("Spieler2 hat gewonnen!");
            //             }

        }
        view.figurAnzeigeAendern(spieler);
        //         if(fehler == false)
        //         {
       view.reichweiteAnzeigen(spieler, model.figurGeben(spieler).reichweiteGeben(), model.figurGeben(spieler).xGeben(), model.figurGeben(spieler).yGeben());
        //         }
    }

    void kannGehenAuf(int x, int y, int spieler)
    {
        int a = x - model.figurGeben(spieler).xGeben();
        int b = y - model.figurGeben(spieler).yGeben();

        char untergrund = model.untergrundAusgeben(x,y);
        char spielfeld = model.spielfeldAusgeben(x,y);

        if(untergrund == 'm' || untergrund == 'a' || untergrund == 'b' || untergrund == 'c' || untergrund == 'd' || spielfeld == '0' || spielfeld == '1' || spielfeld == '2' || spielfeld == '3' || spielfeld == '4' || spielfeld == '5' || spielfeld == '6' || spielfeld == '7' || spielfeld == '8' || spielfeld == '9')
        {
            System.out.println("Der Weg ist Blockiert durch "+untergrund+" oder " + spielfeld);
            fehler = true;
        }

        else 
        {
            if(a<=model.figurGeben(spieler).reichweiteGeben() &&a >=-model.figurGeben(spieler).reichweiteGeben() && b<=model.figurGeben(spieler).reichweiteGeben() && b>=-model.figurGeben(spieler).reichweiteGeben())
            {
                fehler = false;

                if(spieler == 0)model.einheitSetzen(x,y,'0');
                else if(spieler == 1)model.einheitSetzen(x,y,'1');
                else if(spieler == 2)model.einheitSetzen(x,y,'2');
                else if(spieler == 3)model.einheitSetzen(x,y,'3');
                else if(spieler == 4)model.einheitSetzen(x,y,'4');
                else if(spieler == 5)model.einheitSetzen(x,y,'5');
                else if(spieler == 6)model.einheitSetzen(x,y,'6');
                else if(spieler == 7)model.einheitSetzen(x,y,'7');
                else if(spieler == 8)model.einheitSetzen(x,y,'8');
                else if(spieler == 9)model.einheitSetzen(x,y,'9');
                view.angreifenButtonGedrueckt(1);

            }
            else
            {
                fehler = true;
            }
        }
    } 

    void kannAngreifen(int x, int y, int spieler)
    {
        int a = x - model.figurGeben(spieler).xGeben();
        int b = y - model.figurGeben(spieler).yGeben();

        double zufall = Math.random();
        if(spieler <5)
        {
            if(model.spielfeldAusgeben(x, y) == '5' || model.spielfeldAusgeben(x, y) == '6'||model.spielfeldAusgeben(x, y) == '7'||model.spielfeldAusgeben(x, y) == '8'||model.spielfeldAusgeben(x, y) == '9')
            {
                if(a<=model.figurGeben(spieler).reichweiteGeben() &&a >=-model.figurGeben(spieler).reichweiteGeben() && b<=model.figurGeben(spieler).reichweiteGeben() && b>=-model.figurGeben(spieler).reichweiteGeben())
                {
                    fehler = false;
                    model.angreifen((int)(zufall*model.figurGeben(spieler).staerkeGeben()), model.spielfeldAusgeben(x, y));
                    this.angreifen = false;
                    System.out.println("Spieler" +spieler+ "hat spieler "+model.spielfeldAusgeben(x, y)+" angegriffen");
                    view.angreifenButtonGedrueckt(1);
                }
                else
                {
                    System.out.println("Zu weit weg");
                    fehler =true;
                }
            }else 
            {
                System.out.println("DAS IST EIN VERBÜNDETER!!!");
                fehler = true;
            }
        }
        else
        {
            if(model.spielfeldAusgeben(x, y) == '0' || model.spielfeldAusgeben(x, y) == '1'||model.spielfeldAusgeben(x, y) == '2'||model.spielfeldAusgeben(x, y) == '3'||model.spielfeldAusgeben(x, y) == '4')
            {
                if(a<=model.figurGeben(spieler).reichweiteGeben() &&a >=-model.figurGeben(spieler).reichweiteGeben() && b<=model.figurGeben(spieler).reichweiteGeben() && b>=-model.figurGeben(spieler).reichweiteGeben())
                {
                    fehler = false;
                    model.angreifen((int)(zufall*model.figurGeben(spieler).staerkeGeben()), model.spielfeldAusgeben(x, y));
                    this.angreifen = false;
                    System.out.println("Spieler" +spieler+ "hat spieler "+model.spielfeldAusgeben(x, y)+" angegriffen");
                    view.angreifenButtonGedrueckt(1);
                }
                else
                {
                    System.out.println("Zu weit weg");
                    fehler = true;
                }
            }else 
            {
                System.out.println("DAS IST EIN VERBÜNDETER!!!");
                fehler = true;
            }
        }
        //         if (angreifen == true)
        //         {
        //             view.angreifenButtonGedrueckt(1);
        //         }

    }

    public int istAmZug() {
        return spieler;
    }

    public void reset()
    {
        spieler = 0;
    }

    public boolean angreifenGeben()
    {
        return angreifen;
    }

    public void cheat(int c){
        if(c == 0){
            for(int i=0; i<11; i++){
                model.figurGeben(i).schaden(1000);
                view.gesundheitAendern(i,0);
            }
            zug(0,0);
        }

        view.meldungAnzeigen();
    }

    public char spielfeldInhaltGeben(int x, int y)
    {
        char inhalt = model.spielfeldAusgeben(x,y);
        return inhalt;
    }

    public char untergrundInhaltGeben(int x, int y)
    {
        char inhalt = model.untergrundAusgeben(x,y);
        return inhalt;
    }

    public boolean istTot(int spieler) {
        if(model.figurGeben(spieler).gesundheitGeben()<=0) {
            return true;
        } else {
            return false;
        }
    }
    
    public void ueberspringen() {
        if (spieler == 0) {
            spieler = 5;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 1) {
            spieler = 6;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 2) {
            spieler = 7;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 3) {
            spieler = 8;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 4) {
            spieler = 9;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 5) {
            spieler = 1;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 6) {
            spieler = 2;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 7) {
            spieler = 3;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 8) {
            spieler = 4;
            view.figurAnzeigeAendern(spieler);
        } else if (spieler == 9) {
            spieler = 0;
            view.figurAnzeigeAendern(spieler);
        }
    }

    
}
